package com.zmn.oms.model.bo.orderamount;

import com.zmn.oms.common.constant.OrderConsts;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 类描述：优惠计算结果
 * @author heciqi
 * @date 2020-06-03 14:08:02
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DiscountConditionParamsDIO implements Serializable {
    /**
     * 下单平台
     */
    private Integer plat;
    /**
     * 订单id
     */
    private Long orderId;

    /**
     * 工单类型
     */
    private Integer type;

    /**
     * 渠道ID (必填)
     */
    @NotNull(message = "channelId can not be empty")
    private Integer channelId;

    /**
     * 城市ID(必填)
     */
    @NotNull(message = "cityId can not be empty")
    private Integer cityId;

    /**
     * 前台产品Id(必填)
     */
    private Integer showProductId;

    /**
     * 用户id(必填)
     */
    @NotNull(message = "userId can not be empty")
    private Long userId;

    /**
     * 上门用户（扫码用户）
     */
    private Long visitUserId;

    /**
     * 师傅ID
     */
    private Integer masterId;

    /**
     * 服务项类型，目前仅支持两种类型： 1.非计价器订单 2.计价器订单
     * 若值不等于2，则均作为值等于1处理
     * @see OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    @NotNull(message = "servItemType can not be empty")
    private Integer servItemType;

    /**
     * 订单业务类型：1保外业务（C），2保内业务（F），3工程业务（B）
     */
    @NotNull(message = "bizType can not be empty")
    private Integer bizType;

    /**
     * 是否为会员产品单：1不是会员产品单：2是会员产品单
     */
    private Integer member;

    /**
     * 订单下单时间
     */
    @NotNull(message = "订单下单时间 不能为null")
    private Date receiveTime;

    /**
     * 工单状态
     */
    private Integer status;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 工程师上门时间
     */
    private Date visitTime;

    /**
     * 活动id(迟到补偿活动id)
     */
    private Integer discountActivityId;

    /**
     * 后台特殊优惠标示（2、申请特殊优惠）
     */
    private Integer specialDiscountFlag;

    /**
     * 品牌ID
     */
    private Integer brandId;

    /**
     * 下单入口id
     * @see com.zmn.consts.GateTypeConsts
     */
    private Integer receiveEntranceId;

}
